/* Copyright 2011 Gilberto Pacheco Gallegos.
 * Licensed under the Apache License, Version 2.0 (the "License"); you may not use
 * this file except in compliance with the License. You may obtain a copy of the
 * License at
 *     http://www.apache.org/licenses/LICENSE-2.0
 * Unless required by applicable law or agreed to in writing, software distributed
 * under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
 * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific
 * language governing permissions and limitations under the License. */
package net.ramptors.dominiobd.client.entity;

import net.ramptors.dominiobd.client.ExcepcionDeAplicacion;

public class ValidadorDeUsuario {
  public void valida(Usuario objeto) throws ExcepcionDeAplicacion {
    cumple(objeto.getId() != null && !objeto.getId().isEmpty(),
        "Falta el identificador.");
    cumple(objeto.getId().length() <= 50, "Identificador muy largo.");
    cumple(objeto.getContrasena() == null || objeto.getContrasena().isEmpty()
        || objeto.getContrasena().matches("\\w{5,16}"), "Contraseña incorrecta.");
    cumple(objeto.getNombres() != null && !objeto.getNombres().isEmpty(),
        "Falta el campo de nombres.");
    cumple(objeto.getNombres().length() <= 50, "Campo de nombres muy largo.");
    cumple(objeto.getApellidos() != null && !objeto.getApellidos().isEmpty(),
        "Falta el campo de apellidos.");
    cumple(objeto.getApellidos().length() <= 50, "Campo de apellidos muy largo.");
    cumple(objeto.getEmail() != null && !objeto.getEmail().isEmpty(),
        "Falta el correo electrónico.");
    cumple(objeto.getEmail().matches(".+\\@.+"), "Correo electrónico incorrecto.");
    cumple(objeto.getGrupos() != null, "Faltan los grupos.");
  }
  protected void cumple(boolean condicion, String mensajeSiNoSeCumple)
      throws ExcepcionDeAplicacion {
    if (!condicion) {
      throw new ExcepcionDeAplicacion(mensajeSiNoSeCumple);
    }
  }
}